package com.ruoyi.quartz.task;

import com.google.gson.JsonObject;
import com.ruoyi.common.websocket.handler.NotificationWebSocketHandler;
import com.ruoyi.config.NTFYTopicEnum;
import com.ruoyi.entity.MessageRequest;
import com.ruoyi.entity.TodoTaskOutResp;
import com.ruoyi.feign.NtfyServiceClient;
import com.ruoyi.feign.TodoServiceClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("todo")
@Slf4j
public class TodoTask {
    @Autowired
    TodoServiceClient todoServiceClient;
    @Autowired
    NtfyServiceClient ntfyServiceClient;
    public void sendTodoNotification() {
        log.info("开始推送每日待办任务提醒");
        TodoTaskOutResp statisticsTask = todoServiceClient.getStatisticsTask("current_user_id");

        // 构建消息内容
        String messageContent = buildTodoMessageContent(statisticsTask);

        MessageRequest message = MessageRequest.builder()
                .type("ntfy")
                .topic(NTFYTopicEnum.NOTIFY.getCode()) // 您可以根据需要修改主题
                .title("📋 每日待办任务提醒")
                .content(messageContent)
                .priority(3) // 中等优先级
                .tags("alarm_clock,clipboard,red_circle") // 相关图标标签
                .build();

        ntfyServiceClient.sendNtfyMessage(message);
        log.info("每日待办任务提醒推送完成");
    }

    private String buildTodoMessageContent(TodoTaskOutResp stats) {
        StringBuilder content = new StringBuilder();

        // 今日任务概览
        content.append("## 📊 今日任务概览\n");
        content.append(String.format("✅ 已完成: %d/%d 个任务\n",
                stats.getTodayCompleteTaskCount(), stats.getTodayAllTaskCount()));

        double completionRate = stats.getTodayAllTaskCount() > 0 ?
                (double) stats.getTodayCompleteTaskCount() / stats.getTodayAllTaskCount() * 100 : 0;
        content.append(String.format("📈 完成率: %.1f%%\n\n", completionRate));

        // 今日待办任务
        content.append("## 🎯 今日待办\n");
        if (stats.getTodayTask().isEmpty()) {
            content.append("🎉 太棒了！今日没有待办任务！\n\n");
        } else {
            stats.getTodayTask().forEach(task ->
                    content.append("• ").append(task).append("\n"));
            content.append("\n");
        }

        // 明日任务提醒
        content.append("## ⏰ 明日提醒\n");
        if (stats.getTomorrowTaskCount() > 0) {
            content.append(String.format("明天有 %d 个任务：\n", stats.getTomorrowTaskCount()));
            if (!stats.getTomorrowTask().isEmpty()) {
                stats.getTomorrowTask().forEach(task ->
                        content.append("• ").append(task).append("\n"));
            }
            content.append("\n");
        } else {
            content.append("明天暂无安排\n\n");
        }

        // 过期任务警告
        if (stats.getOverDueTaskCount() > 0) {
            content.append("## ⚠️ 过期任务提醒\n");
            content.append(String.format("有 %d 个任务已过期，请及时处理：\n", stats.getOverDueTaskCount()));
            stats.getOverDueTask().forEach(task ->
                    content.append("• ").append(task).append("\n"));
            content.append("\n");
        }

        // 激励语
        content.append(getMotivationalMessage(completionRate));
        content.append("\n");
        content.append("## ⏰ 创建待办任务，🐱‍🏍     "+stats.getUrl()+ "     ");

        return content.toString();
    }

    private String getMotivationalMessage(double completionRate) {
        if (completionRate == 100) {
            return "🌟 完美！今日任务全部完成！继续保持！";
        } else if (completionRate >= 80) {
            return "💪 做得很好！再加把劲就全部完成了！";
        } else if (completionRate >= 50) {
            return "🔥 进度不错，继续努力！";
        } else if (completionRate > 0) {
            return "🚀 好的开始，继续加油！";
        } else {
            return "🌅 新的一天，开始你的任务吧！";
        }
    }
}
